home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / boot / netBoot.new / sun4c.md / saio.h < prev    next >
C/C++ Source or Header  |  1990-12-19  |  3KB  |  109 lines

  1.  
  2. /*    @(#)saio.h 1.3 88/02/08 SMI    */
  3.  
  4. /*
  5.  * Copyright (c) 1986 by Sun Microsystems, Inc.
  6.  */
  7.  
  8. /*
  9.  * header file for standalone I/O package
  10.  */
  11.  
  12. #include "types.h"
  13. #include "sunromvec.h"
  14.  
  15. /*
  16.  * io block: the structure passed to or from the device drivers.
  17.  * 
  18.  * Includes pointers to the device
  19.  * in use, a pointer to device-specific data (iopb's or device
  20.  * state information, typically), cells for the use of seek, etc.
  21.  * NOTE: expand at end to preserve compatibility with PROMs
  22.  */
  23. struct saioreq {
  24.     char    si_flgs;
  25.     struct boottab *si_boottab;    /* Points to boottab entry if any */
  26.     char    *si_devdata;        /* Device-specific data pointer */
  27.     int    si_ctlr;        /* Controller number or address */
  28.     int    si_unit;        /* Unit number within controller */
  29.     daddr_t    si_boff;        /* Partition number within unit */
  30.     daddr_t    si_cyloff;
  31.     off_t    si_offset;
  32.     daddr_t    si_bn;            /* Block number to R/W */
  33.     char    *si_ma;            /* Memory address to R/W */
  34.     int    si_cc;            /* Character count to R/W */
  35.     struct    saif *si_sif;        /* interface pointer */
  36.     char     *si_devaddr;        /* Points to mapped in device */
  37.     char    *si_dmaaddr;        /* Points to allocated DMA space */
  38. };
  39.  
  40.  
  41. #define F_READ    01
  42. #define F_WRITE    02
  43. #define F_ALLOC    04
  44. #define F_FILE    010
  45.  
  46. /*
  47.  * request codes. Must be the same as F_XXX above
  48.  */
  49. #define    READ    F_READ
  50. #define    WRITE    F_WRITE
  51.  
  52. /*
  53.  * How many buffers to make, and how many files can be open at once.
  54.  */
  55. #define    NBUFS    4
  56. #define NFILES    8
  57.  
  58. /*
  59.  * Ethernet interface descriptor
  60.  */
  61. struct saif {
  62.     int    (*sif_xmit)();        /* transmit packet */
  63.     int    (*sif_poll)();        /* check for and receive packet */
  64.     int    (*sif_reset)();        /* reset interface */
  65. };
  66.  
  67. /*
  68.  * Types of resources that can be allocated by resalloc().
  69.  */
  70. enum RESOURCES { 
  71.     RES_MAINMEM,        /* Main memory, accessible to CPU */
  72.     RES_RAWVIRT,        /* Raw addr space that can be mapped */
  73.     RES_DMAMEM,        /* Memory acc. by CPU and by all DMA I/O */
  74.     RES_DMAVIRT,        /* Raw addr space accessible by DMA I/O */
  75. };
  76.  
  77.  
  78. /*
  79.  * Delay units are in microseconds.
  80.  */
  81. #define    DELAY(n)    \
  82. { \
  83.     extern int cpudelay; \
  84.     register int N = (((n)<<4) >> cpudelay); \
  85.  \
  86.     while (--N > 0) ; \
  87. }
  88.  
  89. #define    CDELAY(c, n)    \
  90. { \
  91.     extern int cpudelay; \
  92.     register int N = (((n)<<3) >> cpudelay); \
  93.  \
  94.     while (--N > 0) \
  95.         if (c) \
  96.             break; \
  97. }
  98.  
  99. /*
  100.  * Translate our virtual address (in DMA-able memory) into a physical DMA
  101.  * address, as it would appear to a Multibus device.  (In VMEbus systems,
  102.  * this assumes a MB/VME adapter.)
  103.  */
  104. #define    MB_DMA_ADDR(x)    (((int)(x))&0x000FFFFF)
  105. #define DEF_MBMEM_VA    MBMEM_BASE
  106. #define DEF_MBIO_VA     MBIO_BASE
  107. #define MAX(a,b)        (((a)>(b))? (a): (b))
  108.  
  109.